VC与WormHole的对比
虚信道路由器通过引入虚信道技术,将一个物理信道分成逻辑上的多个虚信道。多个虚信道对物理信道分时复用,通过对虚信道的合理调度,当网络中发生数据分组阻塞时,阻塞的分组被缓存在某一条虚信道的缓存中,其它分组能够使用其它的虚信道继续进行传输。
虚信道路由器是对基本虫孔路由器的改进,它解决了虫孔路由器的阻塞问题,能够提高物理信道的利用率,显著增加片上网络的性能。虚信道路由器需要为每条虚信道提供一个独立的缓存空间,虚信道数目增加一条,路由器的缓存空间需要相应增加一倍。
上图左侧是基本虫孔路由器出现的阻塞问题。路由器1中的分组A要去往路由器3的南输入端口,需要经过路由器l的东输出端口(即路由器2的西输入端口)离开,而路由器2的西输入端口被分组B占用,分组A不能使用,被阻塞在路由器l,尽管路由器3的南输入端口是空闲的,但是分组A将无法到达。
上图右侧是使用虚信道架构的路由器结构传输,可以是双虚信道或多虚信道,分组A将会通过红色的通道到达路由器3。
VC结构
如图是传统的5端口虚信道路由器整体结构。它有5个输入端口与5个输出端口,每个输入端口支持n个虚信道(Virtual Channel,简称VC),每个VC维持一个用于缓存数据的FIFO队列,其中4个端口表示东、南、西、北四个方向,与相邻的4个路由器相连,另外一个表示本地端口,与IP核相连。
另外还包含计算模块(Routing Computation Unit,简称RC)、虚信道分配(Virtual Channel Allocator,简称VA)模块、开关分配(Switch Allocator,简称SA)模块及交叉开关(Crossbar)。虚信道采用的是虫孔交换机制,同时使用缓冲队列放置在输入端口的交换结构。
虚信道路由器的工作过程与虫孔路由器基本相同,不同之处在于多了一个虚信道分配操作。当头微片路由计算完成后,这时候由于一个输出端口有多个输出虚信道,该头微片只能占用其中一个,所以需要经过虚信道分配为其分配一个空闲的输出虚信道后,才能进行后面的开关分配和开关传输。
另外虚信道路由器通过引入虚信道技术,将一个物理信道分成逻辑上的多个虚信道,多个虚信道对物理信道分时复用,意味着该头微片所在的分组不能时时占用物理信道,也就不能时时占用与该物理信道相连的输出端口,因此该头微片所在分组的其它微片也需要每个时钟周期都参与开关分配,而不能直接使用头微片开关分配的结果,即虚信道路由器中开关分配以微片为单位进行,每个微片因为不能时刻占据对应的输出端口,所以每次都要使用开关分配与其他分组的微片进行仲裁判定,这是另外一个不同点。
从上面的描述中我们可以看出,虚信道路由器其实也可以分为一条控制路径和一条数据路径。控制路径由路由计算单元(RC)、虚信道分配单元(VA)和开关分配单元(SA)组成。
与虫孔路由器不同,虚信道路由器的控制路径为该头微片所在的分组预约的是一个输出端口中的一个输出虚信道,其它分组微片不能使用该输出虚信道,直到该头微片的整个分组传输完成,但是其它分组微片可以使用剩下的未被占用的输出虚信道。
数据路径由输入缓存和交叉开关构成,分组微片到来后由输入缓存存储,经过控制路径分配到输出端口后,经交叉开关转发到目的节点。
同时虚信道路由器的工作是按4级流水方式工作,分别是路由计算(RC)、虚信道分配(VA)、开关分配(SA)和开关传输(ST)。以分组包含4个微片为例,其中路由信息只包含在头微片中,所以头微片VA成功后,体微片和尾微片可以直接使用VA的结果,跳过路由计算和虚信道分配阶段,直接进入开关分配阶段。
VC的一些缺点
传统虚信道路由器按4级流水线的方式工作,一个微片经过传统虚信道路由器需要经过虚信道分配与开关分配两个操作,这导致分配所花费的时延占了微片通过路由器所需总时延的一半。
一个输入端口有多个输入虚信道,每个输入虚信道都有可能发出一个请求,那么一个输入端口同时就有多个输入虚信道请求。而VA有可能同时为这些输入虚信道请求各自成功分配到相同的一个输出虚信道,接着VA又将这些分配成功的输入虚信道请求送入SA。这时SA的第一阶段仲裁是从这些成功的请求中选择一个,这导致了矛盾,即VA同时分配成功多个输入虚信道请求,而SA又只从这些请求中选择一个,导致了VA工作的浪费。
传统虚信道路由器的虚信道分配采用两阶段的仲裁结构,其中第二阶段总共有PV个PV:l仲裁器。例如,VC路由器的5个输入端口,每个端口分时复用2个虚拟信道,则每个信道都要与其余(52-1)个信道竞争相同的输出虚拟信道,而这些虚拟的输出信道共有(52)个,所以一共有(52个52:1)的仲裁器。仲裁器的大小和数目都会随着端口数P或者虚信道数V的变大而急剧增加,因此虚信道分配模块所占路由器资源比重较大。